package com.efast.dmom.mgmt.service.les;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.service.IService;
import com.efast.dmom.mgmt.bean.les.LocDlocWhBean;
import com.efast.dmom.mgmt.entity.les.TwMovementHeader;

/**
 * <p>
 *  库存移动单（表头）  服务类
 * </p>
 *
 * @author ChenLiPeng
 * @since 2018-05-16
 */
public interface TwMovementHeaderService extends IService<TwMovementHeader> {

    /**
     * 功能描述: 新增
     *
     * @param: twMovementHeader
     * @return: 
     */
    void save(@Param("twMovementHeader") TwMovementHeader twMovementHeader);

    /**
     * 通过仓库查询库区
     * @param wareHouseId
     * @return
     */
    List<LocDlocWhBean > queryDlocByWh(@Param("wareHouseId") String wareHouseId);


    /**
     * 通过库区查询库位
     * @param dlocId
     * @return
     */
    List<LocDlocWhBean> queryLocByDloc(@Param("dlocId") String dlocId);

    /**
     * 关闭库存移动单
     * @param twInvSkuLoctlBean
     */
    void close(@Param("twInvSkuLoctlBean") TwMovementHeader twInvSkuLoctlBean);


    /**
     * 没有指定源库位和目标库位的，给他们分配库位
     *
     * @param twMovementHeader
     * @return void
     */
    void distribution(@Param("twMovementHeader") TwMovementHeader twMovementHeader);

    /**
     * 执行 执行完成后，调整库存(源库位库存转移至目标库位)
     *
     * @param twMovementHeader
     * @return
     */
    void execute(@Param("twMovementHeader") TwMovementHeader twMovementHeader);
}
